/*
    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/

#include "Map.h"
#include "IMapElement.h"

#include <cstdlib>
#include <cassert>

Map::Map()
:_grid(NULL), _nbLine(0), _nbCol(0)
{

}


Map::~Map()
{
	if(_grid)
	{
		delete [] _grid;
		_grid = NULL;
	}
}

void Map::Init(const unsigned int iNbLine, const unsigned int iNbCol)
{
	assert(iNbLine != 0 && iNbCol != 0);

	_nbLine = iNbLine;
	_nbCol  = iNbCol;
	
	_grid   = new IMapElement*[iNbCol * iNbLine];
	
}


void Map::SetME(const unsigned int & iPosition, IMapElement * iME)
{
	assert(iPosition < _nbCol * _nbLine);
	assert(iME != NULL);
	
	_grid[iPosition] = iME;
}


IMapElement * Map::operator[](const uint & iIndex) const
{
	assert(iIndex < _nbCol * _nbLine);

	return _grid[iIndex];
}

